未來 30 天,我會帶大家從 HTML、CSS、TypeScript 最實用的,一路到 Angular、React、Vue 三大框架,最後完成一個 能放在履歷上的自我介紹網站。整個系列會以實作為主,因為我自己一開始學習也是喜歡慢慢一步一步看知識才實作,但發現這樣太慢了,而且學習不牢固,我們直接設定目標,補足必要基礎知識,就立刻動手吧!然後最後提醒一些注意的地方,我們出發!
h1
、p
、img
…)如果你是第一次寫前端,請先照這幾步:
index.html
,重點是附檔名要是 .html
。index.html
,你就能看到結果。下面是最小可用的 HTML:
<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>我的自我介紹</title>
</head>
<body>
哈囉,我是 Chiayu
我是一名全端工程師
</body>
</html>
重點說明:
<!DOCTYPE html>
:宣告 HTML5 文件,避免瀏覽器用相容模式渲染。<html lang="zh-Hant">
:根元素,lang
對 SEO 與無障礙(螢幕閱讀器語系)很重要。<head>
:放「給瀏覽器與搜尋引擎看的資料」(編碼、頁面標題、SEO meta 等)。<meta charset="UTF-8">
:使用 UTF-8,避免中文亂碼。<title>
:分頁標題。<body>
:實際顯示在畫面上的內容。我們先來大概設定要做的雛型,在寫任何程式碼前腦袋都要先有畫面
為了達成上面結構,會用到以下語義化標籤,我們先有概念,等下實作:
header
:頁面或區段的標頭,常放網站名稱或導覽列,就像文章開頭的抬頭nav
:導覽列(裡面通常是 ul
/li
/a
),就像書的目錄,幫助你跳到不同章節main
:頁面唯一的主要內容,就像一本書的正文,整頁只能有一個section
:主內容的主題區塊(About、Skills、Projects…),就像章節分類h1
–h6
:標題階層(通常整頁 1 個 h1
),h1
最大、h6
最小,就像書名到小節標題p
:段落,顯示一般文字,會自動換行並留一點間距img
:圖片,alt 就像圖說,讓搜尋引擎和視障者也能理解圖片blockquote
:引用文本像是座右銘,通常會縮排,表示這不是你自己寫的話ul
/li
:列表,會自動出現小圓點,適合條列技能或重點article
:獨立內容單元,像是一個作品介紹,可以單獨拿出來看也有意義aside
:補充資訊,例如聯絡方式,像雜誌邊欄的小資訊框address
:作者或組織的聯絡資訊,像名片一樣放 email、電話footer
:頁尾,通常放版權或附註,就像書的版權頁<!DOCTYPE html>
<html lang="zh-Hant">
<head>
<meta charset="UTF-8">
<title>我的自我介紹履歷網站</title>
</head>
<body>
<!-- 網站標頭 -->
<header>
<h1>哈囉,我是 Chiayu</h1>
<p>全端工程師|持續學習與分享</p>
<!-- 導覽列 -->
<nav>
<ul>
<li><a href="#about">關於我</a></li>
<li><a href="#skills">技能</a></li>
<li><a href="#projects">作品</a></li>
<li><a href="#contact">聯絡我</a></li>
</ul>
</nav>
</header>
<!-- 主內容 -->
<main>
<!-- 自我介紹 -->
<section id="about">
<h2>關於我</h2>
<img src="me.jpg" alt="我的照片" width="200">
<p>嗨,我是 Chiayu,一名全端工程師,專注於 Angular、TypeScript 與前後端架構設計。</p>
<blockquote>「持續學習,讓自己比昨天更強。」</blockquote>
</section>
<!-- 技能 -->
<section id="skills">
<h2>技能 Skillset</h2>
<ul>
<li><strong>前端:</strong>Angular, React, Vue</li>
<li><strong>後端:</strong> Node.js, Express</li>
</ul>
</section>
<!-- 作品集 -->
<section id="projects">
<h2>作品集 Projects</h2>
<article>
<h3>寵物電商網站</h3>
<p>使用 Angular + Node.js 開發,支援購物車與支付功能。</p>
</article>
<article>
<h3>LINE Bot 預約系統</h3>
<p>結合 LINE API,讓用戶能在時間段內預約服務。</p>
</article>
</section>
</main>
<!-- 側邊欄:聯絡資訊 -->
<aside>
<h2 id="contact">聯絡資訊</h2>
<address>
Email: <a href="mailto:chiayu123@gmail.com">chiayu123@gmail.com</a><br>
GitHub: <a href="https://github.com/chiayu123">github.com/chiayu123</a><br>
LinkedIn: <a href="https://linkedin.com/in/chiayu123">linkedin.com/in/chiayu123</a>
</address>
</aside>
<!-- 頁尾 -->
<footer>
<p>© 2025 Chiayu. All rights reserved.</p>
</footer>
</body>
</html>
<p>
當成「換行」用
<p>
就是「下一行」。其實 <p>
是「段落」,前後有預設外距。<p>
;段內換行用 <br>
;區塊間距交給 CSS。<!-- 正確:兩個段落 -->
<p>我是一名全端工程師。</p>
<p>擅長使用 Angular</p>
<!-- 正確:同一段內強制換行才用 <br> -->
<p>機<br></p>
<p>
裡放區塊元素(誤用)p
只能包含文字與行內元素,不能放 div
、section
、h2
等。p
外面。<!-- 誤用 -->
<p><h2>關於我</h2></p>
<!-- 正確 -->
<h2>關於我</h2>
<p>我是一名前端工程師...</p>
<span>
當容器使用(誤用)span
是行內元素,不能充當大區塊容器;排版會失控。div
、section
、article
),span
僅包小段文字。<!-- 正確 -->
<section>
<h2>技能</h2>
<p>熟悉 <span>Angular</span> 與 <span>TypeScript</span>。</p>
</section>
<a>
當按鈕或 <button>
當連結(誤用)<a href="...">
;觸發動作(送表單/開關面板)用 <button>
。a
當作沒有 href
的假按鈕。<!-- 正確:導到 GitHub -->
<a href="https://github.com/你的帳號">我的 GitHub</a>
<!-- 正確:觸發動作 -->
<button type="button">展開更多</button>
ul
/ol
的直接子元素不是 li
(誤用)ul/ol > li
,不要塞 div
或 p
當直屬子節點。<!-- 正確 -->
<ul>
<li>HTML</li>
<li>CSS</li>
<li>TypeScript</li>
</ul>
alt
寫檔名或完全省略(誤用)alt
描述圖片的用途或內容;純裝飾圖用 alt=""
。<!-- 內容有意義:寫出意圖 -->
<img src="me.jpg" alt="Chiayu 的個人照片">
<!-- 純裝飾:留空 -->
<img src="divider.svg" alt="">
<br>
/
當成排版工具(誤用)<p>
;區塊間距請寫 CSS margin
。<br>
只用於段內換行(地址、詩歌)。section
當作純樣式容器(誤用)section
應代表有主題的內容,建議有標題(如 h2
)。純容器用 div
。<section>
<h2>作品集</h2>
<!-- 內容 -->
</section>
article
與 section
混用(常見)article
:可獨立存在並可對外重用(如單篇作品、貼文)。section
:主題群組。作品清單用 section
,單個作品介紹用 article
。address
放一般地址或公司介紹(誤用)address
僅用於作者/組織的聯絡資訊(email、電話、社群);一般地點介紹不要用 address
。label
對應(誤用)placeholder
不是標籤;務必用 label for
對應 input id
,可存取性與點擊體驗都更好。<label for="email">Email</label>
<input id="email" type="email" placeholder="name@example.com">
<table>
做版面(誤用)th
、thead
、tbody
與 scope
。width
/height
屬性或用 CSS 保留比例盒,避免 CLS。<img src="me.jpg" alt="Chiayu 的個人照片" width="200" height="200">
main
或完全沒有 main
main
一頁只能一個;確保主要內容都包在裡面,協助輔助工具正確跳轉。明天開始用 CSS / SCSS 美化這個骨架:導覽列橫向排列、照片置中、技能做成卡片、頁尾固定在底部,並建立你的第一套 Design Tokens(色彩、字體、間距)。